package cn.wolfcode.web.controller;

import cn.wolfcode.domain.AjaxResult;
import cn.wolfcode.domain.Employee;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Arrays;
import java.util.List;

//@Controller
public class EmployeeController {

    /**
     * 查询所有员工的接口
     * 1.请求资源 employees
     * 2.请求方法
     * 3.请求参数
     * 4.响应数据 json 员工列表
     */
    @RequestMapping(value = "employees",method = RequestMethod.GET)
    @ResponseBody
    public List<Employee> list(){
        return Arrays.asList(
                new Employee(1L,"张三",18),
                new Employee(2L,"李四",28));
    }

    /**
     *  增加一条员工
     *      请求路径 employees
     *      请求方式 post
     *      请求参数 name=list age=45
     *      响应的数据返回创建好的对象 会有id
     */
    @RequestMapping(value = "employees",method = RequestMethod.POST)
    @ResponseBody
    //用对象接收  会把参数封装进来
    public Employee add(Employee employee){
        employee.setId(100L);
        return employee;
    }

    /*
    *  删除一条员工
    *   请求路径 employees
    *   请求方式 delete
    *   请求参数 id
    *   响应结果
    *   统一的响应结果
    *       操作是否成功 通过一个状态码来设置 code 200 代表成功 code 400 参数错误
    *       如果是错误 需要有错误信息 字符串 的msg 来标识
    *        如果是正常 需要正常的数据 比如员工列表的处理 数据使用object 标识
    * */
    @RequestMapping(value = "employees",method = RequestMethod.DELETE)
    @ResponseBody
    public AjaxResult delete(Long id){
        System.out.println("删除操作的id"+id);
        if(id%2==0) {
            return AjaxResult.success();
        }
        return  AjaxResult.error("出错不让删除");
    }


    /*
     *  修改一条员工
     *   请求路径 employees
     *   请求方式 put
     *   请求参数 id
     *   响应结果
     *   统一的响应结果
     *       操作是否成功 通过一个状态码来设置 code 200 代表成功 code 400 参数错误
     *       如果是错误 需要有错误信息 字符串 的msg 来标识
     *        如果是正常 需要正常的数据 比如员工列表的处理 数据使用object 标识
     * */
    @RequestMapping(value = "employees",method = RequestMethod.PUT)
    @ResponseBody
    public AjaxResult put(Long id) {
        return AjaxResult.success("修改成功");
    }

    /*
     *  查询一条员工
     *   请求路径 employees
     *   请求方式 get
     *   请求参数 id
     *   响应结果
     *   统一的响应结果
     *       操作是否成功 通过一个状态码来设置 code 200 代表成功 code 400 参数错误
     *       如果是错误 需要有错误信息 字符串 的msg 来标识
     *        如果是正常 需要正常的数据 比如员工列表的处理 数据使用object 标识
     *     这样直接请求 请求的是员工所有数据
     *      解决问题：
     *      方案1  ：修改路劲 修改其中一个映射路径employees/xx
     *      方案2  使用参数路径 把参数作用路径的组成部分 使用{变量名字}
     *      访问   employees/100  {id} 和参数里的id对应
     *      如果是  变量名字是{ids}  而参数是id  则需要在参数旁 贴@PathVariable("ids")
     * */
    @RequestMapping(value = "employees/{id}",method = RequestMethod.GET)
    @ResponseBody
    public AjaxResult getEmployee(Long id) {
        Employee employee = new Employee( id, "test", 25);
        return AjaxResult.success(employee);
    }

}
